﻿Imports WSEntidades
Imports Utilerias
Imports WSDatos
Public Class ImpFederalesBL
    Private Function EsValidoParaRegistrar(ByRef pImpFederales As ImpFederalesBE, ByRef mensaje As String) As Boolean
        mensaje = ""
        Try
            If (String.IsNullOrWhiteSpace(pImpFederales.IVATrasladadoTasa)) Then
                mensaje &= "La Tasa de IVA Normal es requerida." & vbCrLf
            Else
                If Not (IsNumeric(pImpFederales.IVATrasladadoTasa)) Then
                    mensaje &= "La Tasa de IVA Normal debe ser de tipo numérico." & vbCrLf
                Else
                    If (pImpFederales.IVATrasladadoTasa <= 0 Or pImpFederales.IVATrasladadoTasa > 100) Then
                        mensaje &= "La Tasa de IVA Normal debe ser un numero positivo mayor a 0% y menor o igual a 100%." & vbCrLf
                    End If
                End If
            End If

            If (pImpFederales.AplicarIEPS AndAlso String.IsNullOrWhiteSpace(pImpFederales.IEPSTasa)) Then
                mensaje &= "Debe especificar la Tasa de IEPS ya que el impuesto aplica en su Empresa." & vbCrLf
            End If
            If Not (String.IsNullOrWhiteSpace(pImpFederales.IEPSTasa)) Then
                If Not (IsNumeric(pImpFederales.IEPSTasa)) Then
                    mensaje &= "La Tasa de IEPS debe ser de tipo numérico." & vbCrLf
                Else
                    If (pImpFederales.IEPSTasa < 0 Or pImpFederales.IEPSTasa > 300) Then
                        mensaje &= "La Tasa de IEPS debe tener un valor entre 0% y 300%." & vbCrLf
                    End If
                End If
            End If

            If (pImpFederales.AplicarISR AndAlso String.IsNullOrWhiteSpace(pImpFederales.ISRTasa)) Then
                mensaje &= "Debe especificar la Tasa de ISR ya que el impuesto aplica en su Empresa." & vbCrLf
            End If
            If Not (String.IsNullOrWhiteSpace(pImpFederales.ISRTasa)) Then
                If Not (IsNumeric(pImpFederales.ISRTasa)) Then
                    mensaje &= "La Tasa de ISR debe ser de tipo numérico." & vbCrLf
                Else
                    If (pImpFederales.ISRTasa < 0 Or pImpFederales.ISRTasa > 100) Then
                        mensaje &= "La Tasa de ISR debe tener un valor entre 0% y 100%" & vbCrLf
                    End If
                End If
            End If

            If (pImpFederales.AplicarIVARetenido AndAlso String.IsNullOrWhiteSpace(pImpFederales.IVARetenidoTasa)) Then
                mensaje &= "Debe especificar la Tasa de IVA RETENIDO ya que el impuesto aplica en su Empresa." & vbCrLf
            End If
            If Not (String.IsNullOrWhiteSpace(pImpFederales.IVARetenidoTasa)) Then
                If Not (IsNumeric(pImpFederales.IVARetenidoTasa)) Then
                    mensaje &= "La Tasa de IVA RETENIDO debe ser de tipo numérico." & vbCrLf
                Else
                    If (pImpFederales.IVARetenidoTasa < 0 Or pImpFederales.IVARetenidoTasa > 100) Then
                        mensaje &= "La Tasa de IVA RETENIDO debe tener un valor entre 0% y 100%" & vbCrLf
                    End If
                End If
            End If

            Return (mensaje = "")
        Catch ex As Exception
            Log.LogException(ex, "ImpFederalesBL.EsValidoParaRegistrar")
            mensaje &= ex.Message
            Return False
        End Try
    End Function

    Public Function ActualizaImpFederales(ByVal TokenConexion As String, ByVal ImpFederales As ImpFederalesBE, ByRef detResp As DetalleRespuesta) As Boolean
        detResp.Mensajes = ""
        Dim ImpFedDAL As ImpFederalesDAL = New ImpFederalesDAL("")
        Try
            If (EsValidoParaRegistrar(ImpFederales, detResp.Mensajes)) Then
                ImpFedDAL = New ImpFederalesDAL(RijndaelSimple.desencriptaDefault(TokenConexion))
                If (ImpFedDAL.actualizaImpFederales(ImpFederales)) Then
                    detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ProcesamientoOK,
                                             "Datos de Impuestos Federales Actualizados.")
                    Return True
                Else
                    detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.Catalogo_NoFueActualizado,
                                             "No se pudo realizar la actualización de Datos de Impuestos Federales." & vbCrLf & detResp.Mensajes)
                    Return False
                End If
            Else
                detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ValoresInvalidos,
                                         "La informacion no es valida para actualizar: " & vbCrLf & detResp.Mensajes)
                Return False
            End If
        Catch ex As Exception
            Log.LogException(ex, "ImpFederalesBL.ActualizaImpFederales")
            detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ExcepcionEnOperacion,
                                        detResp.Mensajes & "Excepción al actualizar Impuestos Federales: " & ex.Message)
            Return False
        Finally
            ImpFedDAL = Nothing
        End Try
    End Function

    Public Function GetImpuestosFederales(ByVal tokenConexion As String, ByRef detResp As DetalleRespuesta) As ImpFederalesBE
        detResp.Mensajes = ""
        Dim impFedDAL As ImpFederalesDAL = New ImpFederalesDAL("")
        Dim impFedBE As ImpFederalesBE
        Try
            impFedDAL = New ImpFederalesDAL(RijndaelSimple.desencriptaDefault(tokenConexion))
            impFedBE = impFedDAL.getImpFederales()
            If (impFedBE IsNot Nothing) Then
                detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ProcesamientoOK,
                                         "Se obtuvo la información de Impuestos Federales con éxito.")
                Return impFedBE
            Else
                detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.Catalogo_NoFueRegistrado,
                                         "No se obtuvo la información de Impuestos Federales" & vbCrLf & detResp.Mensajes)
                Return Nothing
            End If
        Catch ex As Exception
            Log.LogException(ex, "ImpFederalesBL.GetImpFederales")
            detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ExcepcionEnOperacion,
                                        detResp.Mensajes & "Excepción al obtener información de Impuestos Federales: " & ex.Message)
            Return Nothing
        Finally
            impFedDAL = Nothing
            impFedBE = Nothing
        End Try
    End Function

    'Private Function EsValidoParaGetImpFederales(ByRef pIdImpuestos As Integer, ByRef mensaje As String) As Boolean
    '    mensaje = ""
    '    Try
    '        If (String.IsNullOrEmpty(pIdImpuestos)) Then
    '            mensaje &= "El campo Id de Impuestos Federales no puede ir  vacio." & vbCrLf
    '        Else
    '            If (IsNumeric(pIdImpuestos)) Then
    '                If (pIdImpuestos = 0) Then
    '                    mensaje &= "El campo Id de Impuestos Federales debe ser mayor a 0." & vbCrLf
    '                End If
    '            Else
    '                mensaje &= "El campo Id de Impuestos Federales debe ser numérico." & vbCrLf
    '            End If
    '        End If

    '        Return (mensaje = "")
    '    Catch ex As Exception
    '        Log.LogException(ex, "ImpFederalesBL.EsValidoParaGetImpFederales")
    '        mensaje &= ex.Message
    '        Return False
    '    End Try
    'End Function
End Class
